package cn.tedu.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class ClassDemo7 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        //
        List<String> list=new ArrayList<>();
        list.add("abc");

        //泛型在编译时期有类型检测，如果符合类型的数据才能存储
        //反射在运行时期把类型改为Object类型可以存储任意类型数据
        //跳过泛型的类型检测
        Class<List> clz = (Class<List>) list.getClass();
        //
        Method m = clz.getDeclaredMethod("add", Object.class);
        //
        m.invoke(list,1132);
        m.invoke(list,true);
        m.invoke(list,1.4);
        m.invoke(list,new Object());
        //
        System.out.println(list);
    }
}
